#ifndef _IMOVABLE_H_
#define _IMOVABLE_H_

#include <vector>

/**
 * Defines a movable object.
 *
 * A movable object has a position, that can be changed.
 */
class IMovable
{
public:
  /**
   * Defines in whih dimension the object can move.
   */
  static const unsigned int maxDimensions = 2;

  typedef std::vector<int> movableVector;

  /**
   * Get position of the movable object.
   *
   * @return Position of the object
   */
  virtual const movableVector& getPosition() const = 0;

  /**
   * Set the position to a given vector.
   *
   * @arg[in] v : The position to be set
   */
  virtual void setPosition(const movableVector& v) = 0;

  /**
   * Moves the vector by a given vector.
   *
   * @arg[in] v : Vector that will move the object
   */
  virtual void movePosition(const movableVector& v) = 0;
};
#endif /* _IMOVABLE_H_ */

